perm filename DIMEN.RLS[225,JMC] blob
sn#005363 filedate 1971-02-03 generic text, type T, neo UTF8
00050 OFF ECHO;
00100 COMMENT dim cl, where cl is a partition, is the
00200 dimension of the representation of the symmetric group corresponding
00300 to that partitiion. It is computed
00400 as the number of standard tableaus of the shape corresponding
00500 to the partition.;
00600
00700 COMMENT First, we need our old friend rev1;
00800
00900 REV1(U,V) ← IF NULL U THEN V ELSE REV1(CDR U,CAR U . V);
01000
01100 DIM CL ←
01110 IF NULL CL THEN 0
01120 ELSE IF NULL CDR CL AND (CAAR CL = 1 OR CADAR CL = 1) THEN 1
01130 ELSE DIMA(CL,NIL);
01200
01300 DIMA(CL,U) ←
01400 IF NULL CL THEN 0
01500 ELSE IF NULL CDR CL THEN
01600 (IF CAAR CL = 1 THEN
01700 (IF CADAR CL = 1 THEN DIM REVERSE U
01800 ELSE DIM REV1(U,LIST LIST(1, CADAR CL - 1)))
01850 ELSE IF CADAR CL = 1 THEN
01875 DIM REV1(U,LIST LIST(CAAR CL - 1,1))
01900 ELSE DIM REV1(U,LIST(LIST(CAAR CL - 1,CADAR CL),
02000 LIST(1,CADAR CL - 1))))
02100 ELSE DIMA(CDR CL,CAR CL . U) +
02200 (IF CAAR CL = 1 THEN
02300 (IF CADAR CL = CADADR CL + 1 THEN
02400 DIM REV1(U,LIST(CAADR CL + 1,
02500 CADADR CL) . CDDR CL)
02600 ELSE DIM REV1(U,LIST(1,CADAR CL - 1) . CDR CL))
02700 ELSE IF CADAR CL = CADADR CL + 1 THEN
02800 DIM REV1(U,LIST(CAAR CL - 1,CADAR CL) .
02900 (LIST(CAADR CL + 1,CADADR CL) . CDDR CL))
03000 ELSE DIM REV1(U,LIST(CAAR CL - 1,CADAR CL) .
03100 (LIST(1,CADAR CL - 1) . CDR CL)));
03200
03300 COMMENT The next functions find the conjugate of a partition.;
03400
03500 CONJ CL ← IF NULL CL THEN NIL ELSE CONJA(CONJB(1,CL),1,2,CL);
03600
03700 CONJA(L,K,M,CL) ←
03800 (LAMBDA Z; IF Z=L THEN CONJA(L,K+1,M+1,CL)
03900 ELSE IF Z=0 THEN LIST LIST(L,K)
04000 ELSE LIST(K,L) . CONJA(Z,1,M+1,CL))
04100 CONJB(M,CL);
04200
04300 CONJB(K,CL) ←
04350 IF NULL CL THEN 0
04400 ELSE IF CADAR CL < K THEN 0
04500 ELSE CAAR CL + CONJB(K,CDR CL);